const multer = require('multer');
const path = require('path');
const sd = require('silly-datetime');
const mkdirp = require('mkdirp');
const md5 = require('md5');

let tools = {
  multer() {
    // 配置文件存储的目录，这个上传目录必须存在
    // 第一种配置：这种配置会随机生成一个名字并且去除后缀名，不妥
    // var upload = multer({ dest: 'static/uploads' })
    // 第二种配置
    var storage = multer.diskStorage({
      // 配置上传目录
      destination: async (req, file, cb) => {
        // cb(null, 'static/uploads');

        // 配置文件目录
        // 1.获取当前日期 20220511
        let day = sd.format(new Date(), 'YYYYMMDD');
        // static/upload/2022011
        let dir = path.join('static/uploads',day)
        // 2.按照日期生成图片存储目录
        // 异步非阻塞的，记得加await
        await mkdirp(dir);
        
        cb(null, dir);
      },
      // 修改上传后的文件名
      filename: (req, file, cb) => {
        // 获取后缀名
        let extname = path.extname(file.originalname);
        // 根据时间戳生成文件名
        cb(null, file.fieldname + '-' + Date.now() + extname);
      }
    });
    var upload = multer({ storage: storage });

    return upload;
  },

  md5(str) {
    return md5(str);
  },

  getUnix(){
    let d = new Date();
    return d.getTime();
  }
};

module.exports = tools;